package com.sjlh.centurylianhua.utils;

import com.sjlh.centurylianhua.dto.ModuleDto;
import com.sjlh.centurylianhua.dto.ModuleTree;
import com.sjlh.centurylianhua.entity.ProductType;

import java.util.ArrayList;
import java.util.List;


public class UITreeFactory {
   
	public static List<ModuleTree> moduleTreeList; //所有模块树集合

	public static List<ProductType> typeList; //所有模块树集合

	/**
	 * 初始化树形结构
	 */
	public static void loadTree(List<ModuleDto> moduleDtoList){
		moduleTreeList=new ArrayList<ModuleTree>();
		if(moduleDtoList!=null && moduleDtoList.size()>0){
			for (ModuleDto moduleDto : moduleDtoList) {
				if(moduleDto.getIsParentNode()==1){//找父菜单
					ModuleTree  mTree=new ModuleTree(
							moduleDto.getId(),
							moduleDto.getLabel(),
							moduleDto.getHref(),
							moduleDto.getParentId(),
							moduleDto.getIcon(),
							moduleDto.getIsParentNode(),
							moduleDto.getIsChildNode(),
							moduleDto.isChecked());
					mTree.setChildren(new ArrayList<ModuleTree>());
					createChildren(mTree,moduleDtoList);//为父节点添加子节点
					moduleTreeList.add(mTree);
				}
			}
		}
	}
	
	/**
	 * 为节点node增加子节点
	 * @param node
	 * @param moduleDtoList
	 */
	private static void createChildren(ModuleTree node,List<ModuleDto> moduleDtoList){
		for(ModuleDto moduleDto : moduleDtoList){
				if(moduleDto.getParentId()==node.getId()){
					ModuleTree  mTree=new ModuleTree(
							moduleDto.getId(),
							moduleDto.getLabel(),
							moduleDto.getHref(),
							moduleDto.getParentId(),
							moduleDto.getIcon(),
							moduleDto.getIsParentNode(),
							moduleDto.getIsChildNode(),
							moduleDto.isChecked());
					mTree.setChildren(new ArrayList<ModuleTree>());
					node.getChildren().add(mTree);
					createChildren(mTree,moduleDtoList);//递归调用
				}
			}
		//如果父节点（包含在根据roleId获取的模块中）下的所有孩子节点都被选中则父节点被选中，否则不被选中
		/*
		 * List<ModuleTree> childList=node.getChildren(); if(childList!=null &&
		 * childList.size()>0){ for(ModuleTree mtree : childList){
		 * if(mtree.isChecked()==false){ node.setChecked(false); break; } } }
		 */
	}

	/**
	 * 商品类别的树形表格初始化
	 * @param list
	 */
	public static void typeTree(List<ProductType> list){
		typeList=new ArrayList<ProductType>();
		if(list!=null && list.size()>0){
			for (ProductType type : list) {
				if(type.getStandby1()==0){//找父菜单
					ProductType productType1=new ProductType(
							type.getId(),
							type.getName(),
							type.getIfSon(),
							type.getIfFather(),
							type.getStandby1(),
							true);
					productType1.setChildren(new ArrayList<ProductType>());
					typeChildren(productType1,list);//为父节点添加子节点
					typeList.add(productType1);
				}
			}
		}
	}

	/**
	 * 加子类别
	 * @param node
	 * @param moduleDtoList
	 */
	private static void typeChildren(ProductType node, List<ProductType> moduleDtoList){
		for(ProductType moduleDto : moduleDtoList){
			if(moduleDto.getStandby1()==node.getId()){
				ProductType productType1=new ProductType(
						moduleDto.getId(),
						moduleDto.getName(),
						moduleDto.getIfSon(),
						moduleDto.getIfFather(),
						moduleDto.getStandby1(),
						true);
				productType1.setChildren(new ArrayList<ProductType>());
				node.getChildren().add(productType1);
				typeChildren(productType1,moduleDtoList);//递归调用
			}

		}
	}
	
}
